package operateurs;

import utils.FormuleType;
import utils.Symbole;
import base.Formule;

/**
 * Created by IntelliJ IDEA.
 * User: njussien
 * Date: 30/11/12
 * Time: 10:33
 */
public class Non extends OperateurUnaire {
    public Non(Formule f){
    	this.operande = f;
    }
    
    public String toString() {
    	//return "⌐(" + this.operande + ")";
    	return Symbole.NON + "(" + this.operande + ")";
    }

	public Formule supprimeConnecteurs() {
		return new Non(this.operande.supprimeConnecteurs());
	}

	public Formule negation() {
		return this.operande;
	}

	public Formule descendreNegation(boolean isNegatif) {
		return this.operande.descendreNegation(!isNegatif);
	}

	public Formule transportQuantificateurs() {
		return new Non(this.operande.transportQuantificateurs());
	}

	public boolean isSame(Formule o) {
		//if (o.getType() != FormuleType.NON) return false;
		if (o.getClass() != Non.class) return false;
		Non tmp = (Non)o;
		return this.operande.isSame(tmp.operande);

	}

	public Formule miseFormeClausale() {
		// TODO
		return new Non(this.operande.miseFormeClausale());
	}

	public FormuleType getType() {
		return FormuleType.NON;
	}

	public boolean isQuantifieursInOrder(boolean aUniversel) {
		return this.operande.isQuantifieursInOrder(aUniversel);
	}
	
	
}
